package grupobbva.pe.operhc.util;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.builder.ToStringBuilder;

import pe.com.bbva.ws.ldap.cliente.WsLdapClient;
import pe.com.bbva.ws.ldap.cliente.impl.WsLdapClientImpl;
import pe.com.bbva.ws.ldap.cliente.wsmodel.Perfil;
import pe.com.bbva.ws.ldap.cliente.wsmodel.Puesto;
import pe.com.bbva.ws.ldap.cliente.wsmodel.Usuario;
import pe.com.bbva.ws.ldap.cliente.wsmodel.WSLdapException_Exception;

public class LdapClientWS {
	
	static WsLdapClient ldapServicio;
	static {
		ldapServicio = new WsLdapClientImpl("http://118.180.14.22:8080/ws-ldap3/wService?wsdl");
//		ldapServicio = new WsLdapClientImpl("http://118.180.13.221:8080/ws-ldap3/wService?wsdl");
//		ldapServicio = new WsLdapClientImpl("http://localhost:8080/ws-ldap/wService?wsdl");
	}
	
	public void testObtenerUsuariosPorCodigoUsuario() throws WSLdapException_Exception {
		List<String>  codigosUsuarios = new ArrayList<String>();
		codigosUsuarios.add("P019812");
		codigosUsuarios.add("B001228");
		codigosUsuarios.add("P001160");
		codigosUsuarios.add("P003903");
		codigosUsuarios.add("P006460");
		codigosUsuarios.add("P007890");
		codigosUsuarios.add("P008360");
		codigosUsuarios.add("P009881");
		List<Usuario> usuarios = ldapServicio.obtenerUsuariosPorCodigoUsuario(codigosUsuarios);
		System.out.println(codigosUsuarios);
		System.out.println(usuarios);
		for (Usuario u : usuarios) {
			System.out.println(u.getUsuario() + "\t" + u.getApellidos() + "\t" + u.getNombres());
		}
	}

	public void testObtenerUsuarioPorCodigoUsuario() throws WSLdapException_Exception {
		String codigoUsuario = "P019812";
		Usuario u = ldapServicio.obtenerUsuarioPorCodigoUsuario(codigoUsuario);
	}
	
	public void testObtenerUsuariosPorPerfil() throws WSLdapException_Exception {
		List<String> codigosPerfiles = new ArrayList<String>();
		codigosPerfiles.add("SG004_0007");
		List<Usuario> usuarios = ldapServicio.obtenerUsuariosPorCodigoUsuario(codigosPerfiles);
	}
	
	public void testObtenerPerfilesPorUsuarioyAplicacion(String codigoUsuario) throws WSLdapException_Exception {
		String codigoAplicacion = "PBDHY00600";
		List<Perfil> perfiles = ldapServicio.obtenerPerfilesPorUsuarioyAplicacion(codigoUsuario, codigoAplicacion);
		for (Perfil p : perfiles) {
			System.out.println(ToStringBuilder.reflectionToString(p));
		}
	}
	
	public void testObtenerUsuarioPorPerfil()throws WSLdapException_Exception {
		String codigoPerfil = "SG004_0007";
		Usuario u = ldapServicio.obtenerUsuarioPorPerfil(codigoPerfil);
	}
	
	public void testObtenerPerfiles() throws WSLdapException_Exception {
		List<String> codigosAplicaciones = new ArrayList<String>();
		//codigosAplicaciones.add("PBDKU00100");
		codigosAplicaciones.add("PBDHY00600");
		List<Perfil> perfiles = ldapServicio.obtenerPerfiles(codigosAplicaciones);
		for (Perfil p : perfiles) {
			System.out.println(p.getCodigoAplicacion() + "\t" + p.getDescripcion() + "\t" + p.getNombre());
		}
	}
	
	public void testObtenerPerfil()throws WSLdapException_Exception {
		String codigoAplicacion = "PBDHY00600";
		Perfil p = ldapServicio.obtenerPerfil(codigoAplicacion);
	}
	
	public void testObtenerPuestos()throws WSLdapException_Exception {
		List<String> codigosPuestos = new ArrayList<String>();
		List<Puesto> puestos = ldapServicio.obtenerPuestos(codigosPuestos);
	}
	
	public void testObtenerPuesto()throws WSLdapException_Exception {
		String codigoPuesto = "A29";
		Puesto p = ldapServicio.obtenerPuesto(codigoPuesto);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		LdapClientWS ldapClient = new LdapClientWS();
		try {
			ldapClient.testObtenerPerfiles();
			ldapClient.testObtenerPerfilesPorUsuarioyAplicacion("P017073");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
